package com.free.front;

import com.free.exception.SystemException;
import com.free.ext.baidu.BaiduSdkContext;
import com.free.ext.baidu.BaiduSdkOcr;
import com.free.ext.logger.FreeLogger;
import com.free.ext.logger.FreeLoggerFactory;
import com.free.ext.spring.context.AppContext;
import com.free.front.config.DecoConstants;
import com.free.messager.IMessager;
import com.free.messager.MessagerManager;
import com.free.utils.PropertiesResourceUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.stereotype.Component;

import java.util.Properties;

/**
 * <p>
 * 功能概述:
 * </p>
 * <p>
 * 功能详述:
 * </p>
 */
@Component
public class DecoApplicationRunner implements ApplicationRunner {

    /*========================================================================*
     *                         Public Fields (公共属性)
     *========================================================================*/

    private static FreeLogger LOG = FreeLoggerFactory.getLogger(DecoApplicationRunner.class);

    /*========================================================================*
     *                         Private Fields (私有属性)
     *========================================================================*/

    @Value("${spring.profiles.active}")
    private String env;

    /*========================================================================*
     *                         Construct Methods (构造方法)
     *========================================================================*/

    /*========================================================================*
     *                         Public Methods (公有方法)
     *========================================================================*/
    @Override
    public void run(ApplicationArguments applicationArguments) throws Exception {

        // message 处理
        IMessager mesager = AppContext.getBean(IMessager.class);
        MessagerManager.current().setMessager(mesager);

        // 百度OCR
        loadDecoBaiOcr();
    }

    private void loadDecoBaiOcr(){
        //
        Properties properties = null;
        try {
            properties = PropertiesResourceUtils.load(env + "/constant.properties");
            String appId = properties.getProperty("baiduocr.appid");
            String appKey = properties.getProperty("baiduocr.appkey");
            String secretKey = properties.getProperty("baiduocr.secretKey");
            BaiduSdkOcr decoOcr = new BaiduSdkOcr();
            decoOcr.setAppId(appId);
            decoOcr.setAppKey(appKey);
            decoOcr.setSecretKey(secretKey);
            BaiduSdkContext.load(DecoConstants.DECO_BAIDU_OCR,decoOcr);
        } catch (SystemException e) {
            LOG.info("导入百度设置时发生错误{}", e);
        }
    }
    /*========================================================================*
     *                         Private Methods (私有方法)
     *========================================================================*/
}
